/*
 * @(#)DbChange.java   1.0  2021年12月9日
 * 
 * Copyright (c)	2014-2020. All Rights Reserved.	GuangZhou hhmk Technology Company LTD.
 */
package com.swift.dts.init.core;

import com.swift.dts.loadconfig.model.DtsDataBase;
import com.swift.util.type.TypeUtil;

/**
 * 添加说明 
 * @author zhengjiajin
 * @version 1.0 2021年12月9日
 */
public class DbChange {

    /**
     * 判断地址是否改变
     * @param oldDb
     * @param newDb
     * @return 改变返回true
     */
    protected boolean checkAddressChange(DtsDataBase oldDb,DtsDataBase newDb) {
        if(oldDb==null || newDb==null) return true;
        if(!arrayIsSame(oldDb.getUrl(), oldDb.getUrl())) return true;
        if(!arrayIsSame(oldDb.getUserName(), oldDb.getUserName())) return true;
        if(!arrayIsSame(oldDb.getPassword(), oldDb.getPassword())) return true;
        return false;
    }
    
    //二个数组是否相同
    private boolean arrayIsSame(String[] strOld,String[] strNew) {
        if(strOld.length!=strNew.length) return false;
        for(int i=0;i<strOld.length;i++) {
            if(!strOld[i].equals(strNew[i])) return false;
        }
        return true;
    }
    
    /**
     * 判断来源类型是否改变
     * @param oldDb
     * @param newDb
     * @return 改变返回true
     */
    protected boolean checkSourceChange(DtsDataBase oldDb,DtsDataBase newDb) {
        if(oldDb==null || newDb==null) return true;
        if(oldDb.getIsSource()!=newDb.getIsSource()) return true;
        return false;
    }
    
    /**
     * 判断连接数量是否改变
     * @param oldDb
     * @param newDb
     * @return
     */
    protected boolean checkPoolChange(DtsDataBase oldDb,DtsDataBase newDb) {
        if(oldDb==null || newDb==null) return true;
        if(TypeUtil.toInt(oldDb.getMaxPoolSize(), 100)!=TypeUtil.toInt(newDb.getMaxPoolSize(),100)) return true;
        if(TypeUtil.toInt(oldDb.getMinPoolSize(), 5)!=TypeUtil.toInt(newDb.getMinPoolSize(), 5)) return true;
        return false;
    }
    
    /**
     * 判断环型类型是否改变
     * @param oldDb
     * @param newDb
     * @return 改变返回true
     */
    protected boolean checkRingChange(DtsDataBase oldDb,DtsDataBase newDb) {
        if(oldDb==null || newDb==null) return true;
        if(oldDb.getIsRing()!=newDb.getIsRing()) return true;
        return false;
    }
}
